Recommending virtual reward offers and awarding virtual rewards

ABSTRACT

In an embodiment, a method performed by one or more computing devices comprises storing, for one or more marketplace associated applications, interaction information that identifies, for each particular application of said one or more marketplace associated applications, a list of devices that interacted with an instance of the particular application; receiving, from a requesting device, a request for a list of offer eligible applications; determining, based on said interaction information, a set of applications associated with the requesting device; based on said determination of the set of applications associated with the requesting device, sending a list of one or more selected eligible applications to the requesting device.

TECHNICAL FIELD

Embodiments relate to the field of delivering online advertisements tocomputing devices such as mobile computing devices.

BACKGROUND

The approaches described in this section could be pursued, but are notnecessarily approaches that have been previously conceived or pursued.Therefore, unless otherwise indicated herein, the approaches describedin this section are not prior art to the claims in this application andare not admitted to be prior art by inclusion in this section.

Advertisements have been delivered over online networks to user devices.One method for delivering advertisements is to interrupt the delivery ofonline content with an advertisement. For example, a website thatstreams online music may interrupt its stream to deliver anadvertisement.

Advertisers may benefit by providing more compelling incentives forusers to receive advertisements. In addition, advertisements would bemore effective if their delivery caused a greater amount of involvement.The users may benefit by receiving better targeted advertisements andincentives and more rewarding incentives.

SUMMARY OF THE INVENTION

The appended claims serve to summarize the invention.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings:

FIG. 1 illustrates an example network upon which embodiments may beimplemented.

FIG. 2 illustrates a flow diagram illustrating an example of steps thatmay be performed by a device and a marketplace server.

FIG. 3 illustrates one example of a catalog of offers.

FIG. 4 illustrates one example of a marketplace account and linkeddevices.

FIG. 5 illustrates a computer system upon which an embodiment may beimplemented.

DESCRIPTION OF EXAMPLE EMBODIMENTS

Methods for recommending virtual reward offers and awarding virtualrewards are described. In the following description, for the purposes ofexplanation, numerous specific details are set forth in order to providea thorough understanding of the present invention. It will be apparent,however, to one skilled in the art that the present invention may bepracticed without these specific details. In other instances, well-knownstructures and devices are shown in block diagram form in order to avoidunnecessarily obscuring the present invention.

Embodiments are described herein according to the following outline:

-   -   1.0 General Overview    -   2.0 Structural and Functional Overview    -   3.0 Linking a Device to a Marketplace Account    -   4.0 Recommending Virtual Reward Offers        -   3.1 Determining Reward Eligible Applications        -   3.2 Selecting Rewarding Application        -   3.3 Determining Eligible Offers        -   3.4 Selecting Rewarding Offer    -   5.0 Awarding Virtual Rewards    -   6.0 Implementation Mechanisms—Hardware Overview    -   7.0 Extensions and Alternatives

1.0 General Overview

Recommending virtual reward offers and awarding virtual rewards aredescribed. In an embodiment, a method performed by one or more computingdevices comprises storing interaction information for one or moremarketplace associated applications and the interaction informationidentifies, for each particular application of said one or moremarketplace associated applications, a list of devices that interactedwith an instance of the particular application. A list of offer eligibleapplications is received from a requesting device. Based in part on theinteraction information, a set of applications associated with therequesting device are determined. Based in part on the determination ofthe set of applications associated with the requesting device, a list ofone or more selected eligible applications are sent to the requestingdevice.

In another embodiment a non-transitory computer-readable storage mediumcomprises one or more sequences of instructions which when executed byone or more processors cause the one or more processors to perform:storing, for one or more marketplace associated applications,interaction information that identifies, for each particular applicationof said one or more marketplace associated applications, a list ofdevices that interacted with an instance of the particular application;receiving, from a requesting device, a request for a list of offereligible applications; determining, based on said interactioninformation, a set of applications associated with the requestingdevice; based on said determination of the set of applicationsassociated with the requesting device, sending a list of one or moreselected eligible applications to the requesting device.

In other embodiments, the invention encompasses a computer apparatusconfigured to carry out the processes described herein.

2.0 Structural and Functional Overview

FIG. 1 illustrates an example network upon which embodiments may beimplemented.

Device 100 is communicatively coupled to network 150. In variousembodiments, device 100 is a smartphone, tablet computer, a portablecomputing device, or a personal computer. For purposes of illustrating aclear example, FIG. 1 illustrates one device 100 but in practiceembodiments may be implemented using any number of devices, andembodiments involving thousands or millions of devices may beimplemented.

Marketplace server 160, rewarding application server 170, and promotedapplication server 180 are communicatively coupled to network 150.Device 100 may communicate with marketplace server 160, rewardingapplication server 170, and promoted application server 180 throughnetwork 150. Each of the servers 160, 170, 180 may be implemented usinga server-class computer or other computer having one or more processorcores, co-processors or other computers. In one embodiment, marketplaceserver 160, rewarding application server 170, and promoted applicationserver 180 are implemented as one server, or one server computer hostingone or more applications that implement the functions described hereinfor the marketplace server, rewarding application server, and promotedapplication server. For purposes of illustrating a clear example,network 150 is shown as a single element, but in practice network 150may comprise one or more local area networks, wide area networks, and/orinternetworks. In one embodiment, network 150 is an Internet network.

Marketplace application 110, rewarding application 120, applicationstore application 140, and promoted application instance 130 may becomputer program applications that run on device 100 and implement thefunctions and processes that are further described herein. Each ofmarketplace application 110, rewarding application 120, and applicationstore application 140 may be run within a web browser that device 100hosts, or may be downloaded and installed on the device.

3.0 Linking a Device to a Marketplace Account

The following functional description requires no particular hardware,operating system, software system, or other detail for animplementation. Additionally, the flow diagrams presented are examplesof possible algorithmic flow and in no way limit the scope of theinvention. Embodiments of the invention can be practiced in many ways inmany disparate hardware and software environments and using differentalgorithmic flows.

FIG. 2 illustrates a flow diagram illustrating an example of processesthat may be performed by a device and a marketplace server. In oneembodiment, the processes are performed by device 100 and marketplaceserver 160 illustrated in FIG. 1.

At block 201, a user chooses to link device 100 to a marketplaceaccount. A device is linked to a marketplace account if the accountinformation for the marketplace account lists the device as anassociated device. In one embodiment, the user is prompted to link adevice to a marketplace account. In one embodiment, the user is promptedto link a device to a marketplace account in response to a marketplaceserver receiving a request for eligible applications and the marketplaceserver determining that the requesting device is not linked to anymarketplace account.

In an embodiment, in response to determining that the requesting deviceis not linked to any marketplace account, the marketplace server mayprompt a user of the requesting device to perform a particular actionthat may cause the device to be linked to a marketplace account. Theuser may be prompted to download a marketplace application or allow adevice linking module to be installed on the requesting device. In anembodiment, in response to determining that the requesting device is notlinked to any marketplace account, the marketplace server may determinewhich operating system the requesting device runs. In response todetermining the requesting device's operating system, the marketplaceserver selects whether to prompt the user to download an application orto prompt the user to download the device linking module.

In an embodiment, device 100 sends a device link request to marketplaceserver 160. In an embodiment, the device link request is sent bymarketplace application 110. In another embodiment, a link requestingdevice (not pictured) that is different from device 100 may send adevice link request to marketplace server 160 requesting to link thedevice to a marketplace account. The device link request from the linkrequesting device may identify a marketplace account to which device 100is to be linked. The device link request from the link requesting devicemay also be comprised of a device identifier identifying device 100. Inan embodiment, if the device link request does not comprise a deviceidentifier, the user is prompted to perform a particular action that maycause the device to be linked. The user may be prompted to download amarketplace application or allow a device linking module to be installedon the requesting device.

The device link request sent by device 100 may indicate that the deviceis the device that is to be linked to a marketplace account. The devicelink request may be comprised of a device identifier that identifiesdevice 100. The device identifier of a device can be determined in anumber of different ways. In an embodiment, a marketplace applicationinstalled on device 100 may determine a device identifier for thedevice. In another embodiment, a device linking module may be installedonto device 100 once the user of device 100 grants permission. Thedevice linking module may modify the permission of device 100 to allowmarketplace server to determine the device identifier of device 100. Inan embodiment, the device linking module is a provisioning profile.

The device link request may comprise a marketplace account identifieridentifying a single marketplace account. In an embodiment, the devicelink request is sent after a user logs into a marketplace accountthrough a marketplace application. During the login process, the usermay enter login information that uniquely identifies a particularmarketplace account. For example, the user may provide an e-mail addressas login information and a password as authentication information. Inother embodiments, a user identifier other than an e-mail address may beused. In an embodiment, each user identifier is to be associated with,at most, a single marketplace account. In other embodiments, each useridentifier may be associated with multiple marketplace accounts. In anembodiment, if the user has already logged into a marketplace account,the device link request may comprise marketplace account identifier thatidentifies the account that the user is logged into.

In an embodiment, a new marketplace account is created in response toreceiving a device link request that does not identify a marketplaceaccount. The device that is to be linked may then be linked to the newmarketplace account.

At block 202, in response to receiving the device link request,marketplace server 160 links device 100 to a marketplace account.Linking may comprise updating a database record at the marketplaceserver to record a device identifier. The marketplace account that thedevice is linked to may be the account identified in the device linkrequest. Marketplace server 160 updates a list of devices associatedwith a marketplace account to include the device. In one embodiment, amarketplace account has a device list listing the device identifiers ofthe devices associated with the account. Marketplace server 160 may adda device identifier identifying device 100 to the device list.

In one embodiment, each device may only be linked to a singlemarketplace account. In other embodiments, a device may be linked tomultiple marketplace accounts. Marketplace server 160 may firstdetermine whether device 100 has already been linked to a differentmarketplace account. If it is determined that device 100 is alreadylinked to another account, the device link request may be rejected.

In one embodiment, multiple devices may be linked to the samemarketplace account. FIG. 4 illustrates one example of a marketplaceaccount and linked devices. Devices 404, 406 are linked to marketplaceaccount 402. Device 408 is not linked to marketplace account 402. In anembodiment, any of devices 404, 406, 408 may also be used to modifyaccount information for marketplace account 402, including an un-linkeddevice such as device 408. In some embodiments, a user of an un-linkeddevice may only modify account information associated with a marketplaceaccount if a user first logs into a marketplace account using themarketplace application of the un-linked device.

3.1 Determining Eligible Applications

At block 206, marketplace server 160 determines a set of eligibleapplications for device 100. Each application in the set of eligibleapplications may be an application that a user of device 100 can selectto earn virtual rewards for use in that application. In one embodiment,marketplace server 160 determines the set of eligible applications inresponse to receiving a request for eligible applications frommarketplace application 110. Marketplace application 110 may havegenerated the request for eligible applications in response to the userselecting a hyperlink displayed by the marketplace application. Inanother embodiment, a marketplace server determines the set of eligibleapplication for a particular device in response to the particular devicebeing linked to a marketplace account. In an embodiment, the set ofeligible applications for a particular device are determined based, inpart, on the prior applications that have been executed on theparticular device.

In one embodiment, marketplace server 160 determines a set of eligibleapplications based on a set of device-associated applications. The setof device-associated applications may be determined based on a set ofinteraction tables where each interaction table is associated with anapplication.

In an embodiment, marketplace server 160 has access to the interactiontables associated with each of a set of applications. In one embodiment,an entry is added to an interaction table associated with a particularapplication each time a device interacts with an instance of theparticular application or a server associated with the particularapplication. The entry may comprise a device identifier identifying thedevice that interacted with an instance of the application or theapplication server. The interaction entry may further comprise atimestamp indicating the time at which the interaction occurred. Theentry may also comprise a value indicating the type of interaction thatoccurred. For example, in a particular interaction table that storedentries describing different types of interactions, one entry mayindicate that a particular application was executed at 12:35 PM onNovember 3 by a device with a device identifier of 345. The next entryof the interaction table may indicate that an interaction occurred withan instance of the particular application was at 12:37 PM on November 3by a device with a device identifier of 239.

The type of interactions that trigger the creation of an interactiontable entry may vary with different embodiments. For example, in oneembodiment entries may be added to the interaction table of a particularapplication only when an instance of the particular application isexecuted. In another embodiment, entries may be added to the interactiontable of a particular application each time an instance of theparticular application is downloaded and each time an instance of theparticular application is executed. In another embodiment, entries maybe added to the interaction table of a particular application each timea user creates an account with the particular application.

An interaction table may be stored on a server associated with theparticular application or on a marketplace server. For example,marketplace server 160 may store the interaction table associated withrewarding application 120 or rewarding application server which isassociated with rewarding application 120 may store the interactiontable.

In an embodiment, marketplace server 160 stores an interaction tablecomprised of execution entries, where each execution entry represents aparticular occurrence of the particular associated application beingexecuted. In an embodiment, a server associated with the applicationsends a notification to marketplace server 160 each time an instance ofthe particular application is executed. In response to receiving thenotification, marketplace server 160 may store an execution entry in theinteraction table associated with the particular application.

In an embodiment, in response to receiving a request for eligibleapplications, marketplace server 160 determines a set ofdevice-associated applications with which device 100 has already beenassociated. This determination is made based on one or more interactiontables. In an embodiment, each interaction tables associated with a setof applications are searched for a device identifier identifying device100. In one embodiment, for each application for which there is an entryidentifying device 100 in the application's associated interactiontable, the application is included in the set of device-associatedapplications for device 100.

In one embodiment, the interaction tables are searched for only thedevice identifier of the requesting device, device 100. In anotherembodiment, the interaction tables are searched for the deviceidentifiers of device 100 or the device identifiers of any of thedevices linked to the marketplace account of device 100.

In embodiments, marketplace server 160 may search for entries indicatingthat an interaction of a particular type occurred. For example, in oneembodiment, an application may only be deemed a device-associatedapplication for a device if the device has previously executed aninstance of the application. In addition, one or more interaction tablesthat are searched may include entries representing interactions otherthan just executions. Thus, marketplace server 160 may search only forentries that both represent an execution of the application and comprisea device identifier identifying device 100. In other embodiments, anapplication may be deemed a device-associated application for a deviceif the device has previously downloaded an instance of the application.In such an embodiment, marketplace server 160 may search only forentries that both represent a download of an instance of the applicationand comprise a device identifier identifying device 100.

In an embodiment, for each particular application of a set ofapplications, the marketplace server 160 searches the interaction tableassociated with the particular application for entries indicating thatdevice 100 executed or downloaded an instance of the particularapplication.

In an embodiment, marketplace server 160 searches the execution tablefor each application of a set of applications. Within each executiontable, marketplace server 160 searches for the device identifier ofdevice 100. For each execution table that is comprised of an entry withthe device identifier of device 100, the respective application of theexecution table is included in the set of device-associated applicationsfor device 100.

In some embodiments where interaction tables are searched for not onlyidentifiers identifying the requesting device but also identifiersidentifying other devices linked to the requesting device's account, themarketplace server 160 may determine which devices are linked to theaccount of the requesting device before searching the interactiontables. This determination may occur in a variety of different ways. Inone embodiment, the request for eligible applications sent by themarketplace application may include a marketplace account identifierthat identifies the requesting device's marketplace account. In anotherembodiment, the marketplace server 160 may look up the requestingdevice's account information by using the requesting device's deviceidentifier as a search key. The located account information may includethe device identifiers of the other devices linked to the account of therequesting device.

At block 203, marketplace server 160 determines a set of eligibleapplications. In an embodiment, a user of device 100 may earn virtualrewards for any application in the set of eligible applications. The setof eligible applications may be determined based on the set ofdevice-associated applications for device 100. In one embodiment, theset of eligible applications is the set of device-associatedapplications. In another embodiment, the set of eligible applications isa subset of the set of device-associated applications. In oneembodiment, an application is selected for the set of eligibleapplications only if the application is a reward registered applicationand the application has been executed on the requesting device oranother device linked to the requesting device's account. A rewardregistered application is an application whose publisher has agreed toaward a virtual reward for use with the application. Examples of virtualrewards may include virtual currency or a virtual good. Marketplaceserver 160 may send an eligible applications message to marketplaceapplication 110 of device 100 identifying the applications in the set ofeligible applications.

3.2 Selecting Reward Applications

At block 204, an eligible applications list is displayed on device 100.In an embodiment, the eligible applications list is displayed bymarketplace application 110. In an embodiment, each element in theeligible applications list represents an application in the set ofeligible applications identified in the eligible applications message.The list of eligible applications may represent applications for whichthe user may choose to gain virtual rewards.

At block 205, a user selects a particular rewarding application from thelist of eligible applications. In one embodiment, if the rewardingapplication is not already installed on device 100, application storeapplication 140 may cause a download page for downloading the rewardingapplication to display on the device. The download page may include ahyperlink for downloading rewarding application 120. In response to theuser's selection, marketplace application 110 notifies marketplaceserver 160 of the user's selection.

3.3 Determining Eligible Offers

Marketplace server 160 receives a notification indicating that theselected application has been selected by a user to be the rewardingapplication. At block 206, based on the selected rewarding application,marketplace server 160 determines a set of eligible offers for gainingvirtual rewards in the selected rewarding application. The set ofeligible offers may be a list of offers that are recommended to a userfor gaining virtual rewards.

In an embodiment, eligible offers in the set are chosen from a set ofregistered offers. For each registered offer, an advertiser has agreedto give some form of consideration in exchange for the performance of anoffer action. In one embodiment, the consideration is a payment. Anadvertiser payment rate is the amount of consideration the advertiser ofthe registered offer has agreed to give for a performance of an offeraction. An offer action is the action the user must perform for theadvertiser to give the advertiser payment rate. For example, the offeraction of a particular offer may be to watch a streaming videoadvertisement online and the advertiser may agree to pay 10 cents orprovide some other consideration for each occurrence of the offeraction.

In an embodiment, one or more offers of the set of registered offers areapplication promotion offers. The offer action of an applicationpromotion offer requires the user to perform some action in connectionwith a promoted application that is to be downloaded on to a userdevice. Examples of application promotion offers include offersrequiring a user to execute the promoted application or to download thepromoted application and create an account using the promotedapplication. One example of an application promotion offer is anadvertiser agreeing to pay 50 cents for every time a user downloads thepromoted application.

One or more registered offers may be associated with furtherlimitations. For example, for a registered offer that requires theexecution of a promoted application, the offer may also require that theapplication not have been executed before on the device.

In one embodiment, the set of registered offers chosen to be eligibleoffers may differ depending on which application has been selected to bethe rewarding application. In one embodiment, some registered offers maybe deemed un-selectable for some reward application. In one embodiment,marketplace server 160 may store a set of un-selectable applications forone or more rewarding applications. In an embodiment, the set ofeligible applications for a rewarding application are determined byselecting all applications in the set of eligible applications that arenot in the set of unselectable applications associated with therewarding application.

In one embodiment, a registered offer may not be chosen to be in the setof eligible offers because the offer action has already been performedby the requesting device or the requesting account. For example, aparticular registered offer may require a user to execute a promotedapplication. Marketplace server 160 may determine, based on aninteraction table associated with the promoted application, that device100 or another device linked to device 100's account has alreadyexecuted the promoted application. Thus, the particular registered offermay not be selected to be an eligible offer.

In one embodiment, device information about device 100 or the accountinformation associated with the device's account affects which offersare selected as eligible offers. For example, a user may have enteredaccount information indicating her geographic location. In addition, oneor more advertisers may have restricted an offer to be made availableonly in a particular country. In an embodiment, marketplace server 160does not select any offers for the set of eligible offers that areassociated with a location restriction that is not satisfied based onthe account information. For example, an advertiser may have registeredan offer with the limitation that the offer be available to users withdevices registered in the United States. When the marketplace server 160determines a set of eligible requests for a user whose accountinformation indicates the user's location to be outside the UnitedStates, marketplace server 160 may not choose the registered offer to bein the set of eligible offers for the user. In this context, as anexample, if the user has an account or phone registered in the US butgoes to Asia and does not change the phone location, the user may bedeemed to be in the US even though they may currently be outside of theUS. In one embodiment, marketplace server 160 does not select theregistered offer for any account with account information indicatingthat the user is located in a location other than the United States. Inanother embodiment, marketplace server 160 does not select theregistered offer for any account with account information indicatingthat the user is located in a location other than the United States orfor any account that does not list a location.

In other embodiments, a user may have entered information regarding hisfavorite categories or categories that he does not wish to receiveoffers for. In an embodiment, marketplace server 160 may compareinformation about a particular registered offer with preferenceinformation associated with the particular marketplace account of device100 to determine which offers should be chosen as eligible offers.

Marketplace server 160 may access account information associated withthe marketplace account of device 100 in a variety of ways. In oneembodiment, the notification of a rewarding application selection mayindicate the marketplace account of device 100. In an embodiment,marketplace server 160 may look up information about the marketplaceaccount of device 100 by using the device identifier as a search key.

In one embodiment, the determination of which offers to select aseligible offers may be based on the operating system of device 100 orthe operating systems of other devices linked to the account of device100. The operating system of the device 100 may be indicated in therequest for eligible offers. Alternatively, the stored accountinformation associated with device 100 may indicate the operatingsystems that the device runs or other associated devices run. Aparticular registered offer may only be compatible on some operatingsystems, thus the registered offer may be associated with a constrainton the operating system of the requesting device or the account of therequesting device. For example, a particular registered offer mayrequire an offer action of the user executing a particular promotedapplication. The particular promoted application may only be compatiblewith a particular operating system. Thus, the registered offer may beassociated with a constraint that the requesting device or anotherdevice linked to the requesting device's account must operate on theparticular operating system. Marketplace server 160 may compareoperating system information about device 100 or other devices linked todevice 100′s marketplace account to the constraint and determine thatthe constraint of the registered offer is not satisfied. Thus, theparticular registered offer may not be selected as an eligible offer.

In one embodiment, marketplace server 160 determines an offer value foreach eligible offer based in part on the amount of consideration thatthe advertiser has agreed to pay in exchange for the performance of theoffer action. In one embodiment, marketplace server 160 indicates aranking for each eligible offer in the set of eligible offers based onrank. The ranking may occur based on a variety of different criteria. Inone embodiment, the eligible offers may be ranked based, in part, on theoffer value associated with the eligible offer. The offers with agreater offer value may be assigned a higher rank. For example, if theoffer value of a first registered offer is 2 Dollars of ABC Cash, andthe offer value of the second registered offer is 1 Dollar of ABC Cash,the first registered offer may be assigned a higher rank value.

In another embodiment, the determination of the rank of an eligibleoffer may be based on the category to which the eligible offer belongsand the category with which the rewarding application is associated. Forexample, an eligible offer may be given a higher rank value if it isassociated with the same category as the rewarding application. Forexample, there may be an offer action that requires the user to expressapproval (for example, select a “like” link) for a particular pet storeon a social networking site. The particular offer may be assigned to thePets category. In addition, the user may have chosen the applicationPuppyLover to be the rewarding application, which has also been assignedto the Pets category. Based on the determination that both the eligibleoffer and the rewarding application are assigned to the same category ofPets, the marketplace server 160 may rank the particular offer to “like”the Pet Store higher than another offer in a different category.

In another embodiment, the ranking of an eligible offer may bedetermined based on account information associated with the account ofthe requesting device. For example, a particular offer may be associatedwith a preference for a particular geographic region. If the accountinformation of the requesting account indicates that the account user islocated in the same geographic region as the particular geographicregion listed in the preference, the particular offer may be assigned ahigher rank value than offers that have not been targeted to anyparticular geographic region or have been targeted to a differentgeographic region.

In another embodiment, the determination of the rank may be based inpart on other account information associated with the requesting device.Other types of account information may include a variety of informationthat a user may choose to provide for purposes of receiving morerelevant offers. Examples of other types of account information includefavorite categories of the user, the gender of the user, and the age ofthe user. For example, if a user has indicated Movies as a favoritecategory, an offer that is also associated with the Movies category maybe assigned a greater rank than an offer of a category that has not beenlisted as a favorite category. As another example, marketplace server160 may assign a lower rank to offers that belong to a category in whichthe user has indicated a lack of interest. The ranking of eligibleoffers may also be based on other account information that the user haschosen to share.

The ranking of eligible offers may also be based on publicly availableinformation about the offers. Examples of publicly available informationmay include reviews about the offer or ratings of the offers. Forexample, an offer to download a particular application may be assigned arelatively high rank if the particular application has received a lot ofgood reviews.

3.4 Selecting Rewarding Offers

In one embodiment, marketplace server 160 sends a message to marketplaceapplication 110 describing the offers that have been determined to beeligible offers. In an embodiment, the message describes the offer valueand offer action of an offer. The message may describe a plurality ofoffers and the message may also indicate a ranking for the plurality ofoffers.

At block 207, marketplace application 110 displays a catalog of offers.FIG. 3 illustrates one example of a catalog of offers. Catalog 300 iscomprised of catalog entry 310 and catalog entry 320. Each catalog entryrepresents an offer from the set of eligible offers. Offer description314 describes the offer action associated with the eligible offerrepresented by catalog entry 310. Offer value 312 describes the offervalue associated with the eligible offer represented by catalog entry310. In one embodiment, catalog entries 310, 320 are ordered accordingto the rankings of the respective offers as indicated by the messagereceived from marketplace server 160.

At block 208, a user selects a particular eligible offer as therewarding offer. In an embodiment, the user causes the selection byclicking on a hyperlink within a particular entry of a catalog thatrepresents the selected offer. In one embodiment, the selection of thehyperlink causes a page containing a link for downloading the offeredapplication to load. In one embodiment, the associated offer action ofthe selected offer requires the user to download promoted applicationinstance 130.

In an embodiment, in response to the selection of the rewarding offer,marketplace application 110 sends an offer selection notification tomarketplace server 160 indicating that device 100 has selected aparticular offer. In an embodiment, the notification identifies thepromoted application of the selected offer. In one embodiment, the offerselection notification identifies the selection device upon which theselection occurred. The offer selection notification may also indicatethe time at which the offer was selected. The offer selectionnotification may also identify the rewarding application that wasselected. The offer selection notification may also indicate the amountof the virtual reward to be awarded for the completion of the offer.

In an embodiment, application store application 140 causes device 100 todisplay a download page for the promoted application of the selectedoffer that includes an option for downloading promoted applicationinstance 130. The option may comprise a hyperlink, button, or some othergraphical user interface (GUI) object. The display of the download pagemay occur in response to the selection of the application promotionoffer that promotes the promoted application.

At block 209, the user executes promoted application instance 130, aninstance of the promoted application onto device 100. In one embodiment,each time an instance of the promoted application is executed, an entryis stored in an execution table that identifies the device upon whichthe application instance was executed. The entry may also identify thetime of the execution.

In one embodiment, promoted application server 180 stores an interactiontable for the promoted application and adds an entry to the executiontable when promoted application instance 130 is executed. In anotherembodiment, marketplace server 160 stores the interaction table for thepromoted application, and promoted application server 180 sends anotification to marketplace server 160 indicating that device 100executed an instance of the promoted application instance 130.Marketplace server 160 then adds an entry to the execution tableindicating device 100′s execution of promoted application instance 130.In an embodiment, promoted application instance 130 may comprise anotification module. The notification module may be programmed to send anotification indicating that promoted application instance 130 has beenexecuted each time the application instance is executed.

In one embodiment, promoted application server 180 stores theinteraction table associated with the promoted application. Promotedapplication instance 130 may send a notification to promoted applicationserver 180 when promoted application instance 130 is executed. Inresponse to receiving the execution notice, promoted application server180 may add an entry to the execution table.

In another embodiment, marketplace server 160 stores the interactiontable for the promoted application. Promoted application instance 130may send a notification regarding the execution to marketplace server160 when promoted application instance 130 is executed and marketplaceserver 160 may add an entry to the promoted application's interactiontable. Alternatively, promoted application instance 130 may send theexecution notification to promoted application server 180. Promotedapplication server 180 may then notify marketplace server 160 about theexecution of promoted application instance 130. Marketplace server 160may then add an entry to the promoted application's execution table.

4.0 Awarding Virtual Rewards

At block 210, marketplace server 160 determines that the rewarding offerhas been completed. The completion of the offer is verified by searchingan interaction table of the selected promoted application identified bythe offer selection notification. The interaction table of the selectedpromoted application is searched for a device identifier identifying thedevice 100. If there is such a particular entry found in the executiontable, marketplace server 160 determines that the promoted applicationwas executed and the offer was completed.

In one embodiment, the offer action may require that the execution occurwithin a predetermined amount of time. Marketplace server 160 may alsocheck the timestamps associated with entries of the interaction toensure that the execution occurred after the offer was selected and thatthe execution occurred within the predetermined amount of time from theoffer selection.

In other embodiments, marketplace server 160 may verify the completionof a different type of offer than one requiring the offer action ofexecuting a promoted application. The completion of such an offer may beverified by checking an interaction table of the promoted applicationfor an entry indicating that the offer action of the offer wasperformed.

At block 211, marketplace server 160 causes the virtual of the completedoffer to be awarded.

In one embodiment, awarding the offer comprises updating a balancevalue. The balance value may be an application specific balance valuethat is associated with a particular rewarding application. Theapplication specific balance value may indicate the amount of anapplication specific reward that is available for redemption with theparticular rewarding application. According to some embodiments, theuniversal virtual balance may be expressed in a virtual currency,virtual goods, or other units.

In another embodiment, the balance value may indicate an amount ofuniversal virtual balance available for redemption. The universalvirtual balance may be redeemable in a plurality of differentmarketplace applications.

In an embodiment, a reward that is earned using a particular user deviceis awarded to the marketplace account of the user device. In anembodiment, each marketplace account is only associated with a singleuniversal balance value and at most one application specific balancevalue for each marketplace application.

In an embodiment, a plurality of devices are linked to the sameparticular marketplace account are rewards earned on each of the userdevices are awarded the particular marketplace account. For example,referring again to FIG. 4, users of each of both devices 404, 406 maycomplete reward offers. The completions of each reward offer may causean update to a single universal balance value associated withmarketplace account 402. In an embodiment, the rewards associated withmarketplace account 402 may be redeemed in either of the linked devices404 or 406.

In one embodiment, a reward offer may be earned on a particular devicefor a rewarding application that is not installed on the particulardevice but is installed on a different device that is linked to theparticular device's account. For example, device 404 may request a listof eligible applications. A particular application that has only beeninstalled on device 406 and not on device 404 may be included in the setof eligible applications. A user of device 404 may then select theparticular application as the rewarding application, and complete anoffer for the rewarding application using that device.

In one embodiment, the universal balance values are stored onmarketplace server 160. One or more application specific balance valuesmay also be stored in marketplace server 160. In an embodiment, a serverof a rewarding application stores the balance value for the rewardingapplication.

For example, referring to FIG. 1, rewarding application server 170 maystore a balance value for rewarding application 120. In one embodiment,marketplace server 160 notifies the rewarding application server 170 ofan offer completion. The offer completion notification may comprise adevice identifier that identifies device 100 as the device thatperformed the offer action. The offer completion notification may alsoindicate the offer value that is to be awarded. The offer completionnotification may also be comprised of a marketplace account identifier.In an embodiment, in response to receiving an offer completionnotification, rewarding application server 170 uses the marketplaceaccount identifier identified in the offer completion notification tolocate a particular rewarding application account. Rewarding applicationserver 170 then updates a balance value associated with the particularapplication based on the received offer value to be awarded.

In an embodiment, a device that is not linked to a marketplace accountmay also be able to earn virtual rewards for a marketplace account. Forexample, referring to FIG. 4, an offer could be completed on device 408and the reward could be awarded to marketplace account 402. An award maybe granted to marketplace account 402 by updating a balance valueassociated with marketplace account 402. In some embodiments, a user mayonly use an un-linked device to earn virtual rewards for a particularmarketplace account by first logging in to the marketplace account.

In one embodiment, an un-linked device may only be able to completereward offers that do not require the downloading, installation, orexecution of an application. An un-linked device may be able to completea reward offers by interacting with a web browser. For example, anun-linked device such as device 408 may be able to complete rewardoffers that require an offer action of watching a streamingadvertisement online.

5.0 Implementation Mechanisms—Hardware Overview

FIG. 5 is a block diagram that illustrates a computer system 500 uponwhich an embodiment of the invention may be implemented. Computer system500 includes a bus 502 or other communication mechanism forcommunicating information, and a processor 504 coupled with bus 502 forprocessing information. Computer system 500 also includes a main memory506, such as a random access memory (RAM) or other dynamic storagedevice, coupled to bus 502 for storing information and instructions tobe executed by processor 504. Main memory 506 also may be used forstoring temporary variables or other intermediate information duringexecution of instructions to be executed by processor 504. Computersystem 500 further includes a read only memory (ROM) 508 or other staticstorage device coupled to bus 502 for storing static information andinstructions for processor 504. A storage device 510, such as a magneticdisk or optical disk, is provided and coupled to bus 502 for storinginformation and instructions.

Computer system 500 may be coupled via bus 502 to a display 512, such asa cathode ray tube (CRT), for displaying information to a computer user.An input device 514, including alphanumeric and other keys, is coupledto bus 502 for communicating information and command selections toprocessor 504. Another type of user input device is cursor control 516,such as a mouse, a trackball, or cursor direction keys for communicatingdirection information and command selections to processor 504 and forcontrolling cursor movement on display 512. This input device typicallyhas two degrees of freedom in two axes, a first axis (e.g., x) and asecond axis (e.g., y), that allows the device to specify positions in aplane.

The invention is related to the use of computer system 500 forimplementing the techniques described herein. According to oneembodiment of the invention, those techniques are performed by computersystem 500 in response to processor 504 executing one or more sequencesof one or more instructions contained in main memory 506. Suchinstructions may be read into main memory 506 from anothermachine-readable medium, such as storage device 510. Execution of thesequences of instructions contained in main memory 506 causes processor504 to perform the process steps described herein. In alternativeembodiments, hard-wired circuitry may be used in place of or incombination with software instructions to implement the invention. Thus,embodiments of the invention are not limited to any specific combinationof hardware circuitry and software.

The term “machine-readable medium” as used herein refers to any mediumthat participates in providing data that causes a machine to operationin a specific fashion. In an embodiment implemented using computersystem 500, various machine-readable media are involved, for example, inproviding instructions to processor 504 for execution. Such a medium maytake many forms, including but not limited to storage media andtransmission media. Storage media includes both non-volatile media andvolatile media. Non-volatile media includes, for example, optical ormagnetic disks, such as storage device 510. Volatile media includesdynamic memory, such as main memory 506. Transmission media includescoaxial cables, copper wire and fiber optics, including the wires thatcomprise bus 502. Transmission media can also take the form of acousticor light waves, such as those generated during radio-wave and infra-reddata communications. All such media must be tangible to enable theinstructions carried by the media to be detected by a physical mechanismthat reads the instructions into a machine.

Common forms of machine-readable media include, for example, a floppydisk, a flexible disk, hard disk, magnetic tape, or any other magneticmedium, a CD-ROM, any other optical medium, punchcards, papertape, anyother physical medium with patterns of holes, a RAM, a PROM, and EPROM,a FLASH-EPROM, any other memory chip or cartridge, a carrier wave asdescribed hereinafter, or any other medium from which a computer canread.

Various forms of machine-readable media may be involved in carrying oneor more sequences of one or more instructions to processor 504 forexecution. For example, the instructions may initially be carried on amagnetic disk of a remote computer. The remote computer can load theinstructions into its dynamic memory and send the instructions over atelephone line using a modem. A modem local to computer system 500 canreceive the data on the telephone line and use an infra-red transmitterto convert the data to an infra-red signal. An infra-red detector canreceive the data carried in the infra-red signal and appropriatecircuitry can place the data on bus 502. Bus 502 carries the data tomain memory 506, from which processor 504 retrieves and executes theinstructions. The instructions received by main memory 506 mayoptionally be stored on storage device 510 either before or afterexecution by processor 504.

Computer system 500 also includes a communication interface 518 coupledto bus 502. Communication interface 518 provides a two-way datacommunication coupling to a network link 520 that is connected to alocal network 522. For example, communication interface 518 may be anintegrated services digital network (ISDN) card or a modem to provide adata communication connection to a corresponding type of telephone line.As another example, communication interface 518 may be a local areanetwork (LAN) card to provide a data communication connection to acompatible LAN. Wireless links may also be implemented. In any suchimplementation, communication interface 518 sends and receiveselectrical, electromagnetic or optical signals that carry digital datastreams representing various types of information.

Network link 520 typically provides data communication through one ormore networks to other data devices. For example, network link 520 mayprovide a connection through local network 522 to a host computer 524 orto data equipment operated by an Internet Service Provider (ISP) 526.ISP 526 in turn provides data communication services through the worldwide packet data communication network now commonly referred to as the“Internet” 528. Local network 522 and Internet 528 both use electrical,electromagnetic or optical signals that carry digital data streams. Thesignals through the various networks and the signals on network link 520and through communication interface 518, which carry the digital data toand from computer system 500, are exemplary forms of carrier wavestransporting the information.

Computer system 500 can send messages and receive data, includingprogram code, through the network(s), network link 520 and communicationinterface 518. In the Internet example, a server 530 might transmit arequested code for an application program through Internet 528, ISP 526,local network 522 and communication interface 518.

The received code may be executed by processor 504 as it is received,and/or stored in storage device 510, or other non-volatile storage forlater execution. In this manner, computer system 500 may obtainapplication code in the form of a carrier wave.

6.0 Extensions and Alternatives

In the foregoing specification, embodiments of the invention have beendescribed with reference to numerous specific details that may vary fromimplementation to implementation. Thus, the sole and exclusive indicatorof what is the invention, and is intended by the applicants to be theinvention, is the set of claims that issue from this application, in thespecific form in which such claims issue, including any subsequentcorrection. Any definitions expressly set forth herein for termscontained in such claims shall govern the meaning of such terms as usedin the claims. Hence, no limitation, element, property, feature,advantage or attribute that is not expressly recited in a claim shouldlimit the scope of such claim in any way. The specification and drawingsare, accordingly, to be regarded in an illustrative rather than arestrictive sense.

1. A method comprising: storing, for one or more marketplace associatedapplications, interaction information that identifies, for eachparticular application of said one or more marketplace associatedapplications, a list of devices that interacted with an instance of theparticular application; receiving, from a requesting device, a requestfor a list of offer eligible applications; determining, based on saidinteraction information, a set of applications associated with therequesting device; based on said determination of the set ofapplications associated with the requesting device, sending a list ofone or more selected eligible applications to the requesting device;wherein the method is performed by one or more computing devices.
 2. Themethod of claim 1, wherein determining a set of applications associatedwith the requesting device comprises searching the interactioninformation for a device identifier identifying the requesting device.3. The method of claim 1, wherein determining a set of applicationsassociated with the requesting device comprises searching theinteraction information for a device identifier identifying a devicefrom a set of devices associated with an account of the requestingdevice.
 4. The method of claim 1 further comprising: receiving, by amarketplace application, the list of eligible applications; displaying alist of eligible application descriptions, wherein each entry in thelist of eligible application descriptions describes an application ofthe list of eligible applications.
 5. The method of claim 4 furthercomprising: receiving a selection of an eligible application of the listof eligible applications; displaying a plurality of offer descriptions,each offer description of the plurality of offer descriptions describinga respective offer for the selected eligible application, wherein eachrespective offer offers a reward in exchange for a performance of anoffer action; receiving a selection of a particular offer from theplurality of respective offers; determining that a user of therequesting device has performed the a particular offer action associatedwith the particular offer; in response to determining that the user hasperformed the particular offer action, awarding the user the a rewardassociated with the particular offer.
 6. The method of claim 5, whereinthe selected eligible application is not installed on the requestingdevice and is installed on a device associated with an account of therequesting device.
 7. The method of claim 5, wherein the offerdescriptions are displayed in a particular order and the particularorder is determined based on information associated with an account ofthe requesting device.
 8. The method of claim 5, wherein the offeraction comprises executing a promoted application; wherein saidselection of the particular offer was performed on an offer selectiondevice; wherein determining that the user has performed the particularoffer action comprises: accessing interaction information for thepromoted application that identifies a plurality of devices thatexecuted the particular application; based on the accessed interactioninformation, determining that the advertised promoted application wasexecuted by the offer selection device.
 9. The method of claim 5,wherein the reward associated with the particular offer is a particularamount of virtual reward for use with the selected eligible application;wherein awarding the user the offered reward comprises sending a messageto a server associated with the selected eligible application indicatingan amount to be awarded.
 10. The method of claim 5, wherein the rewardis a particular amount of virtual reward for use with the selectedeligible application; wherein awarding the user the offered rewardcomprises updating a value associated with the requesting device. 11.The method of claim 5, wherein the offered reward is a particular amountof virtual reward for use with the selected eligible application;wherein awarding the user the reward comprises: determining an amount ofa universal reward to award based on the particular amount of virtualreward; in response to said determination, updating a value associatedwith an account of the requesting device, the value representing anamount of universal reward.
 12. The method of claim 1, wherein the oneor more selected eligible applications are determined by selecting oneor more applications from the set of applications associated with therequesting device that were executed within a particular time period.13. The method of claim 5, wherein the plurality of offer descriptionsare displayed according to an order and an order value associated withan offer of said respective offers is determined, based in part, on howsimilar said offer is to one or more applications of the set ofapplications associated with the requesting device.
 14. The method ofclaim 1, wherein the requesting device is any of a smartphone, a tabletcomputer, a netbook computer, a laptop computer, or a desktop computer.15. A non-transitory computer-readable storage medium comprising one ormore sequences of instructions which when executed by one or moreprocessors cause the one or more processors to perform: storing, for oneor more marketplace associated applications, interaction informationthat identifies, for each particular application of said one or moremarketplace associated applications, a list of devices that interactedwith an instance of the particular application; receiving, from arequesting device, a request for a list of offer eligible applications;determining, based on said interaction information, a set ofapplications associated with the requesting device; based on saiddetermination of the set of applications associated with the requestingdevice, sending a list of one or more selected eligible applications tothe requesting device; applications to the requesting device.
 16. Thenon-transitory computer-readable storage medium of claim 15, wherein theinstructions that cause determining a set of applications associatedwith the requesting device further comprise instructions that causesearching the interaction information for a device identifieridentifying the requesting device.
 17. The non-transitorycomputer-readable storage medium of claim 15, wherein instructions thatcause determining a set of applications associated with the requestingdevice further comprise instructions that cause searching theinteraction information for a device identifier identifying a devicefrom a set of devices associated with an account of the requestingdevice.
 18. The non-transitory computer-readable storage medium of claim15 further comprising instructions which when executed cause: receiving,by a marketplace application, the list of eligible applications;displaying a list of eligible application descriptions, wherein eachentry in the list of eligible application descriptions describes anapplication of the list of eligible applications.
 19. The non-transitorycomputer-readable storage medium of claim 18 further comprisinginstructions which when executed cause: receiving a selection of aneligible application of the list of eligible applications; displaying aplurality of offer descriptions, each offer description of the pluralityof offer descriptions describing a respective offer for the selectedeligible application, wherein each respective offer offers a reward inexchange for a performance of an offer action; receiving a selection ofa particular offer from the respective offers; determining that a userof the requesting device has performed a particular offer actionassociated with the particular offer; in response to determining thatthe user has performed the particular offer action, awarding the userthe a reward associated with the particular offer.
 20. Thenon-transitory computer-readable storage medium of claim 19, wherein theselected eligible application is not installed on the requesting deviceand is installed on a device associated with an account of therequesting device.
 21. The non-transitory computer-readable storagemedium of claim 19, wherein the offer descriptions are displayed in aparticular order and the particular order is determined based oninformation associated with an account of the requesting device.
 22. Thenon-transitory computer-readable storage medium of claim 19, wherein theoffer action comprises executing a promoted application; wherein saidselection of the particular offer was performed on an offer selectiondevice; wherein determining that the user has performed the actioncomprises: accessing interaction information for the promotedapplication that identifies a plurality of devices that executed theparticular application; based on the accessed interaction information,determining that the promoted application was executed by the offerselection device.
 23. The non-transitory computer-readable storagemedium of claim 19, wherein the reward associated with the particularoffer is a particular amount of virtual reward for use with the selectedeligible application; wherein awarding the user the reward comprisessending a message to a server associated with the selected eligibleapplication indicating an amount to be awarded.
 24. The method of claim19, wherein the reward is a particular amount of virtual reward for usewith the selected eligible application; wherein awarding the user theoffered reward comprises updating a value associated with the requestingdevice.
 25. The non-transitory computer-readable storage medium of claim19, wherein the reward is a particular amount of virtual reward for usewith the selected eligible application; wherein awarding the user thereward comprises: determining an amount of universal reward to awardbased on the particular amount of virtual reward; in response to saiddetermination, updating a value associated with an account of therequesting device, the value representing an amount of universal reward.26. The non-transitory computer-readable storage medium of claim 15, theone or more selected eligible applications are determined by selectingone or more applications from the set of applications associated withthe requesting device that were executed within a particular timeperiod.
 27. The non-transitory computer-readable storage medium of claim19, wherein the plurality of offer descriptions are displayed accordingto an order and an order value associated with an offer of saidrespective offers is determined, based in part, on how similar saidoffer is to one or more applications of the set of applicationsassociated with the requesting device.
 28. The non-transitorycomputer-readable storage medium of claim 15, wherein the requestingdevice is any of a smartphone, a tablet computer, a netbook computer, alaptop computer, or a desktop computer.